JAVA 调用 com.google.protobuf 您所在的位置:网站首页 google flaystory JAVA 调用 com.google.protobuf

JAVA 调用 com.google.protobuf

#JAVA 调用 com.google.protobuf| 来源: 网络整理| 查看: 265

1、pom.xml引入依赖

com.google.protobuf protobuf-java 3.17.3 com.google.protobuf protobuf-java-util 3.17.3

2、到 https://github.com/protocolbuffers/protobuf/releases/tag/v3.17.3 下载相应版本的"protoc.exe" ,在 protoc-3.17.3-win64.zip 压缩包里;

3、创建 .proto 文件StockInfoReply.proto,内容示例:

syntax = "proto3"; option java_package = "com.xrh.pb"; option java_outer_classname = "StockInfoReplyModel"; message StockInfoReply { string Symbol = 1; string Symbol_Name = 2; string PinYin_Name = 3; string Full_Name = 4; string Eng_Name = 5; string Exchange= 6; string CurrencyType = 7; string Industry = 8; string Regional = 9; string SymbolType = 10; string Concept = 11; string Market = 12; string ListStatus = 13; }

4、DOS文件定位到 protoc.exe 所在目录,执行生成JAVA文件命令:

protoc.exe --java_out=D:\project\xrh_springboot\src\main\java StockInfoReply.proto

5、文件目录结构如下:

 

6、测试MyTest.java代码:

package com.xrh.pb; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class MyTest { public static void main(String[] args) { // 按照定义的数据结构,创建一个Person StockInfoReplyModel.StockInfoReply.Builder personBuilder = StockInfoReplyModel.StockInfoReply.newBuilder(); personBuilder.setSymbol("00001"); personBuilder.setSymbolName("上证指数"); StockInfoReplyModel.StockInfoReply xxg = personBuilder.build(); // 将数据写到输出流,如网络输出流,这里就用ByteArrayOutputStream来代替 ByteArrayOutputStream output = new ByteArrayOutputStream(); try { xxg.writeTo(output); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // -------------- 分割线:上面是发送方,将数据序列化后发送 --------------- byte[] byteArray = output.toByteArray(); // -------------- 分割线:下面是接收方,将数据接收后反序列化 --------------- // 接收到流并读取,如网络输入流,这里用ByteArrayInputStream来代替 ByteArrayInputStream input = new ByteArrayInputStream(byteArray); // 反序列化 StockInfoReplyModel.StockInfoReply xxg2; try { xxg2 = StockInfoReplyModel.StockInfoReply.parseFrom(input); System.out.println("Symbol:" + xxg2.getSymbol()); System.out.println("SymbolName:" + xxg2.getSymbolName()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有